export interface IUnitList {
    current: number
    size: number
    username?: string
    realName?: string
    email?: string
    phone?: string
    gender?: string
    enabled?: string
    unitId?: string
}

export interface Record {
    id?: string
    /** 组织名称 */
    name?: string;

    /** 组织编码 */
    code?: string;

    /** 组织层级编码 */
    codeseq?: string;

    /** 联系人 */
    contact?: string;

    /** 手机 */
    mobile?: string;

    /** 地址 */
    address?: string;

    /** 邮箱 */
    email?: string;

    /** 网址 */
    web?: string;

    /** 上级组织ID */
    parentId?: number;

    /** 是否有下级机构 */
    hasChildren?: number;

    /** 是否系统内置 */
    isSystem?: number;

    /** 是否启用（0：禁用；1：启用） */
    enabled?: number;

    /** 负责人ID */
    leaderId?: string;
}

export interface IUnitListData {
    records: Record[]
    total: number
    pageSize: number
    page: number
    orders: any[]
    optimizeCountSql: boolean
    searchCount: boolean
    countId: null
    maxLimit: null
    pages: number
}

export interface IUnitListRes {
    code: string
    message: string
    data: IUnitListData
}

export interface IUnitAdd {
    code: string
    message: string
    data: null
}

//详情
export interface IUnitGetData {
    code: string
    message: string
    data: Entity
}


export interface IUnitUpateData {
    code: string
    message: string
    data: null
}


export interface IUnitDel {
    code: string;
    message: string;
    data: null;
}

export interface IUpdate extends IUnitDel {
    id?: string
}

//from表单数据
export interface IUnit {
    username?: string //用户名
    password?: string //密码
    realName?: string //真实姓名
    email?: string | null //邮箱
    gender?: string // 用户性别（1：男；2：女；0：未知）
    avatar?: string | null //头像
    remark?: string | null //备注
    phone?: string //手机号
    enabled?: string //帐号状态（0：禁用；1：正常）
    roleIds?: string[] //角色
    postIds?: string[] //岗位
    unitId?: string //组织ID
}

//组织菜单树

export interface OrganizationReturn {
    code: string;
    message: string;
    data: Organization;
}

export interface Organization {
    /** 地址 */
    address: string;

    /** 子组织数组 */
    children: Organization[]; // 假设子组织具有相同的结构，这里使用了递归类型定义

    /** 组织编码 */
    code: string;

    /** 组织层级编码 */
    codeseq: string;

    /** 联系人 */
    contact: string;

    /** 创建时间（可能为null） */
    createTime: Date | null; // 这里假设createTime应该是Date类型，但如果是字符串则需要相应调整

    /** 邮箱 */
    email: string;

    /** 是否启用（1：启用；0或其他值表示未启用） */
    enabled: number; // 这里使用了number类型，因为值明确为1或其他数字，但根据业务逻辑可能更希望是boolean或其他枚举类型

    /** 组织ID */
    id: string;

    /** 负责人ID（可能为null） */
    leaderId: string | null;

    /** 手机号码 */
    mobile: string;

    /** 组织名称 */
    name: string;

    /** 上级组织ID */
    parentId: string; // 这里假设为字符串类型，但根据业务逻辑可能是number类型

    /** 是否系统内置（1：是；0或其他值表示否） */
    system: number; // 同enabled，可能更希望是boolean或其他枚举类型

    /** 网址 */
    web: string;
}

//详情
export interface Entity {
    id: string;
    name: string;
    code: string;
    codeseq: string;
    contact: string;
    address: string;
    email: string;
    web: string;
    parentId: string;
    hasChildren: string;
    //   isSystem: boolean;
    //   enabled: boolean;
    //   leaderId: string;
}


//岗位
// export interface IPostPageData {
//     code: string
//     message: string
//     data: {
//         records: IPostPage[]
//         total: number
//         pageSize: number
//         page: number
//         orders: any[]
//         optimizeCountSql: boolean
//         searchCount: boolean
//         countId: string | null
//         maxLimit: number | null
//         pages: number
//     }
// }

// export interface IPostPage {
//     id: string // 岗位ID
//     postName: string // 岗位名称
//     postCode: string // 岗位编码
//     sort: number // 排序
//     enabled: number // 是否启用（1：启用；0：禁用）
//     remark: string | null // 备注
//     createBy: string | null
//     createTime: string | null
//     updateBy: string | null
//     updateTime: string | null
// }